home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 33
/
Amiga Format AFCD33 (Issue 117, Dec 1998).iso
/
-seriously_amiga-
/
archivers
/
unrar
/
src-orig
/
const.h
< prev
next >
Wrap
C/C++ Source or Header
|
1998-09-07
|
7KB
|
335 lines
#include "os.h"
#include "compress.h"
#define Min(x,y) (((x)<(y)) ? (x):(y))
#define Max(x,y) (((x)>(y)) ? (x):(y))
#define NM 260
#define SIZEOF_MARKHEAD 7
#define SIZEOF_OLDMHD 7
#define SIZEOF_NEWMHD 13
#define SIZEOF_OLDLHD 21
#define SIZEOF_NEWLHD 32
#define SIZEOF_SHORTBLOCKHEAD 7
#define SIZEOF_LONGBLOCKHEAD 11
#define SIZEOF_COMMHEAD 13
#define SIZEOF_PROTECTHEAD 26
#define PACK_VER 20
#define UNP_VER 20
#define PROTECT_VER 20
enum { M_DENYREAD,M_DENYWRITE,M_DENYNONE,M_DENYALL };
enum { FILE_EMPTY,FILE_ADD,FILE_UPDATE,FILE_COPYOLD,FILE_COPYBLOCK };
enum { ARG_RESET,ARG_NEXT,ARG_REMOVE };
enum { ARC=1,VOL,SFX };
enum { SUCCESS,WARNING,FATAL_ERROR,CRC_ERROR,LOCK_ERROR,WRITE_ERROR,
OPEN_ERROR,USER_ERROR,MEMORY_ERROR,USER_BREAK=255,IMM_ABORT=0x8000 };
enum { EN_LOCK=1,EN_VOL=2 };
enum { SD_MEMORY=1,SD_FILES=2 };
enum { ASK_OVERWR=0,ALL_OVERWR=1,NO_OVERWR=2 };
enum { ALARM_SOUND,ERROR_SOUND };
enum { MSG_STDOUT,MSG_STDERR,MSG_NULL };
enum { COMPARE_PATH,NOT_COMPARE_PATH };
enum { NAMES_DONTCHANGE,NAMES_UPPERCASE,NAMES_LOWERCASE };
enum { LOG_ARC=1,LOG_FILE=2 };
enum { CRC16=1,CRC32=2 };
enum { OLD_DECODE=0,OLD_ENCODE=1,NEW_CRYPT=2 };
enum { OLD_UNPACK,NEW_UNPACK };
enum { KEEP_TIME=1,LATEST_TIME };
#define MHD_MULT_VOL 1
#define MHD_COMMENT 2
#define MHD_LOCK 4
#define MHD_SOLID 8
#define MHD_PACK_COMMENT 16
#define MHD_AV 32
#define MHD_PROTECT 64
#define LHD_SPLIT_BEFORE 1
#define LHD_SPLIT_AFTER 2
#define LHD_PASSWORD 4
#define LHD_COMMENT 8
#define LHD_SOLID 16
#define LHD_WINDOWMASK 0x00e0
#define LHD_WINDOW64 0
#define LHD_WINDOW128 32
#define LHD_WINDOW256 64
#define LHD_WINDOW512 96
#define LHD_WINDOW1024 128
#define LHD_DIRECTORY 0x00e0
#define SKIP_IF_UNKNOWN 0x4000
#define LONG_BLOCK 0x8000
#define READSUBBLOCK 0x8000
enum { ALL_HEAD=0,MARK_HEAD=0x72,MAIN_HEAD=0x73,FILE_HEAD=0x74,
COMM_HEAD=0x75,AV_HEAD=0x76,SUB_HEAD=0x77,PROTECT_HEAD=0x78};
enum { EA_HEAD=0x100 };
enum { MS_DOS=0,OS2=1,WIN_32=2,UNIX=3 };
enum { OLD=1,NEW=2};
enum { EEMPTY=-1,EBREAK=1,EWRITE,EREAD,EOPEN,ECREAT,ECLOSE,ESEEK,
EMEMORY,EARCH };
struct MarkHeader
{
UBYTE Mark[7];
};
struct OldMainHeader
{
UBYTE Mark[4];
UWORD HeadSize;
UBYTE Flags;
};
struct NewMainArchiveHeader
{
UWORD HeadCRC;
UBYTE HeadType;
UWORD Flags;
UWORD HeadSize;
UWORD Reserved;
UDWORD Reserved1;
};
struct OldFileHeader
{
UDWORD PackSize;
UDWORD UnpSize;
UWORD FileCRC;
UWORD HeadSize;
UDWORD FileTime;
UBYTE FileAttr;
UBYTE Flags;
UBYTE UnpVer;
UBYTE NameSize;
UBYTE Method;
};
struct NewFileHeader
{
UWORD HeadCRC;
UBYTE HeadType;
UWORD Flags;
UWORD HeadSize;
UDWORD PackSize;
UDWORD UnpSize;
UBYTE HostOS;
UDWORD FileCRC;
UDWORD FileTime;
UBYTE UnpVer;
UBYTE Method;
UWORD NameSize;
UDWORD FileAttr;
};
struct BlockHeader
{
UWORD HeadCRC;
UBYTE HeadType;
UWORD Flags;
UWORD HeadSize;
UDWORD DataSize;
};
struct SubBlockHeader
{
UWORD HeadCRC;
UBYTE HeadType;
UWORD Flags;
UWORD HeadSize;
UDWORD DataSize;
UWORD SubType;
UBYTE Level;
};
struct CommentHeader
{
UWORD HeadCRC;
UBYTE HeadType;
UWORD Flags;
UWORD HeadSize;
UWORD UnpSize;
UBYTE UnpVer;
UBYTE Method;
UWORD CommCRC;
};
struct ProtectHeader
{
UWORD HeadCRC;
UBYTE HeadType;
UWORD Flags;
UWORD HeadSize;
UDWORD DataSize;
UBYTE Version;
UWORD RecSectors;
UDWORD TotalBlocks;
UBYTE Mark[8];
};
struct RAROptions
{
int Overwrite;
int Sound;
int MsgStream;
int DisableComment;
int FreshFiles;
int UpdateFiles;
int Recurse;
int PackVolume;
int AllYes;
int ConvertNames;
int KeepBroken;
};
struct FileStat
{
UDWORD FileAttr;
UDWORD FileTime;
UDWORD FileSize;
int IsDir;
};
int ReadHeader(int BlockType);
int GetPassword(int AskCount);
void GetPswStr(char *Str);
void SplitCommandLine(int Argc,char *Argv[]);
void ExecuteCommand(void);
long GetFreeDisk(int NumDisk);
void MakeTmpPath(void);
void InitSomeVars(void);
void AddArgsFromFile(char *Name);
void Ask(char *AskStr);
void ShowUnpWrite(void);
void OutHelp(void);
void AddToArchive(void);
int CmpName(char *Wildcard,char *Name,int CmpPath);
void ListArchive(void);
void ExtrFile(void);
void ShutDown(int Mode);
void ErrExit(int ErrCode,int Code);
void ProcessSignal(int SigType);
void CreatePath(char *fpath);
int FileExist(char *FileName);
int twrite(FILE *stream,void *buf,unsigned len);
int tread(FILE *stream,void *buf,unsigned len);
int tseek(FILE *stream,long offset,int fromwhere);
long filelen(FILE *FPtr);
void SetOpenFileStat(FILE *FPtr);
void SetCloseFileStat(char *Name);
void SetOpenFileTime(FILE *FPtr,UDWORD ft);
void SetCloseFileTime(char *Name,UDWORD ft);
UDWORD GetOpenFileTime(FILE *FPtr);
FILE* topen(char *Name,char *Mode,unsigned int Sharing);
FILE* ShareOpen(char *Name,char *Mode,unsigned int Sharing);
void tclose(FILE *FPtr);
FILE* wopen(char *Name,char *Mode,unsigned int Sharing);
void NextVolumeName(void);
int MergeArchive(int ShowFileName);
void UnstoreFile(void);
void ConvertPath(char *OutPath, char *InPath);
void ViewComment(void);
void ViewFileComment(void);
int IsArchive(void);
int GetArchives(int Mode);
int ToPercent(long N1,long N2);
void AddExclArgs(char *Name);
int ExclCheck(char *Name);
int ReadBlock(int BlockType);
void GetArcNames(void);
void FindArchives(void);
int ReadArcName(void);
void ConvertDate(UDWORD ft);
void SetOptions(char *OptStr,int MultipleSwitches);
int GetKey(void);
int ToUpperCase(int Ch);
int IsProcessFile(int ComparePath);
char * PointToName(char *Path);
FILE* FileCreate(char *Name,int OverwriteMode,int *UserReject);
void WriteBlock(int BlockType);
unsigned int UnpRead(unsigned char *Addr,unsigned int Count);
unsigned int UnpWrite(unsigned char *Addr,unsigned int Count);
void FreeMemory(void);
void InitAddArgName(char *ArgMemAddr,long ArgMemSize);
int NextArgName(int Mode);
void AddArgName(char *Arg);
void AskNextVol(void);
int IsAllArgsUsed(void);
void SetExt(char *Name,char *NewExt);
void ShowComment(UBYTE *Addr,int Size);
int KbdAnsi(UBYTE *Addr,int Size);
int IsRemovable(int NumDrive);
void tunpack(unsigned char *Mem,int Solid,int Mode);
void Unpack(unsigned char *UnpAddr,int Solid);
void ShowAnsiComment(UBYTE *Addr,unsigned int Size);
int MakeDir(char *Name,UDWORD Attr);
void MakeSound(int MSec,int Freq);
int DateFormat(void);
void SetCryptKeys(char *Password);
void EncryptBlock(unsigned char *Buf);
void DecryptBlock(unsigned char *Buf);
void Crypt(UBYTE *Data,UDWORD Count,int Method);
void InitCRC(void);
UDWORD CRC(UDWORD StartCRC,void *Addr,UDWORD Size, int Mode);
char* strlower(char *Str);
char* strupper(char *Str);
int stricomp(char *Str1,char *Str2);
int strnicomp(char *Str1,char *Str2,int N);
int SplitPath(char *FullName,char *Path,char *Name,int RemoveDrive);
int GetPathDisk(char *Path);
int GetCurDisk(void);
void ShowAttr(void);
int IsDir(UDWORD Attr);
int IsLabel(UDWORD Attr);
void ConvertFlags(void);
DIR * DirOpen(char *Name);
int IsPathDiv(int Ch);
void ConvertUnknownHeader(void);
char* RemoveEOL(char *Str);
void mprintf(char *fmt,...);
int CheckForDevice(FILE *CheckFile);